{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# coding: utf-8\n",
    "\n",
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "\n",
    "#使用numpy生成200个随机点\n",
    "x_data = np.linspace(-0.5,0.5,200)[:,np.newaxis]\n",
    "noise = np.random.normal(0,0.02,x_data.shape)\n",
    "y_data = np.square(x_data) + noise\n",
    "\n",
    "#定义两个placeholder\n",
    "x = tf.placeholder(tf.float32,[None,1])\n",
    "y = tf.placeholder(tf.float32,[None,1])\n",
    "\n",
    "#定义神经网络中间层\n",
    "Weights_L1 = tf.Variable(tf.random_normal([1,10]))\n",
    "biases_L1 = tf.Variable(tf.zeros([1,10]))\n",
    "Wx_plus_b_L1 = tf.matmul(x,Weights_L1) + biases_L1\n",
    "L1 = tf.nn.tanh(Wx_plus_b_L1)\n",
    "\n",
    "#定义神经网络输出层\n",
    "Weights_L2 = tf.Variable(tf.random_normal([10,1]))\n",
    "biases_L2 = tf.Variable(tf.zeros([1,1]))\n",
    "Wx_plus_b_L2 = tf.matmul(L1,Weights_L2) + biases_L2\n",
    "prediction = tf.nn.tanh(Wx_plus_b_L2)\n",
    "\n",
    "#二次代价函数\n",
    "loss = tf.reduce_mean(tf.square(y-prediction))\n",
    "#使用梯度下降法训练\n",
    "train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    #变量初始化\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "    for _ in range(2000):\n",
    "        sess.run(train_step,feed_dict={x:x_data,y:y_data})\n",
    "        \n",
    "    #获得预测值\n",
    "    prediction_value = sess.run(prediction,feed_dict={x:x_data})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "进行多项式拟合的训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "#画图\n",
    "plt.figure()\n",
    "plt.scatter(x_data,y_data)\n",
    "plt.plot(x_data,prediction_value,'r-',lw=5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.5       ],\n",
       "       [-0.49497487],\n",
       "       [-0.48994975],\n",
       "       [-0.48492462],\n",
       "       [-0.4798995 ],\n",
       "       [-0.47487437],\n",
       "       [-0.46984925],\n",
       "       [-0.46482412],\n",
       "       [-0.45979899],\n",
       "       [-0.45477387],\n",
       "       [-0.44974874],\n",
       "       [-0.44472362],\n",
       "       [-0.43969849],\n",
       "       [-0.43467337],\n",
       "       [-0.42964824],\n",
       "       [-0.42462312],\n",
       "       [-0.41959799],\n",
       "       [-0.41457286],\n",
       "       [-0.40954774],\n",
       "       [-0.40452261],\n",
       "       [-0.39949749],\n",
       "       [-0.39447236],\n",
       "       [-0.38944724],\n",
       "       [-0.38442211],\n",
       "       [-0.37939698],\n",
       "       [-0.37437186],\n",
       "       [-0.36934673],\n",
       "       [-0.36432161],\n",
       "       [-0.35929648],\n",
       "       [-0.35427136],\n",
       "       [-0.34924623],\n",
       "       [-0.34422111],\n",
       "       [-0.33919598],\n",
       "       [-0.33417085],\n",
       "       [-0.32914573],\n",
       "       [-0.3241206 ],\n",
       "       [-0.31909548],\n",
       "       [-0.31407035],\n",
       "       [-0.30904523],\n",
       "       [-0.3040201 ],\n",
       "       [-0.29899497],\n",
       "       [-0.29396985],\n",
       "       [-0.28894472],\n",
       "       [-0.2839196 ],\n",
       "       [-0.27889447],\n",
       "       [-0.27386935],\n",
       "       [-0.26884422],\n",
       "       [-0.2638191 ],\n",
       "       [-0.25879397],\n",
       "       [-0.25376884],\n",
       "       [-0.24874372],\n",
       "       [-0.24371859],\n",
       "       [-0.23869347],\n",
       "       [-0.23366834],\n",
       "       [-0.22864322],\n",
       "       [-0.22361809],\n",
       "       [-0.21859296],\n",
       "       [-0.21356784],\n",
       "       [-0.20854271],\n",
       "       [-0.20351759],\n",
       "       [-0.19849246],\n",
       "       [-0.19346734],\n",
       "       [-0.18844221],\n",
       "       [-0.18341709],\n",
       "       [-0.17839196],\n",
       "       [-0.17336683],\n",
       "       [-0.16834171],\n",
       "       [-0.16331658],\n",
       "       [-0.15829146],\n",
       "       [-0.15326633],\n",
       "       [-0.14824121],\n",
       "       [-0.14321608],\n",
       "       [-0.13819095],\n",
       "       [-0.13316583],\n",
       "       [-0.1281407 ],\n",
       "       [-0.12311558],\n",
       "       [-0.11809045],\n",
       "       [-0.11306533],\n",
       "       [-0.1080402 ],\n",
       "       [-0.10301508],\n",
       "       [-0.09798995],\n",
       "       [-0.09296482],\n",
       "       [-0.0879397 ],\n",
       "       [-0.08291457],\n",
       "       [-0.07788945],\n",
       "       [-0.07286432],\n",
       "       [-0.0678392 ],\n",
       "       [-0.06281407],\n",
       "       [-0.05778894],\n",
       "       [-0.05276382],\n",
       "       [-0.04773869],\n",
       "       [-0.04271357],\n",
       "       [-0.03768844],\n",
       "       [-0.03266332],\n",
       "       [-0.02763819],\n",
       "       [-0.02261307],\n",
       "       [-0.01758794],\n",
       "       [-0.01256281],\n",
       "       [-0.00753769],\n",
       "       [-0.00251256],\n",
       "       [ 0.00251256],\n",
       "       [ 0.00753769],\n",
       "       [ 0.01256281],\n",
       "       [ 0.01758794],\n",
       "       [ 0.02261307],\n",
       "       [ 0.02763819],\n",
       "       [ 0.03266332],\n",
       "       [ 0.03768844],\n",
       "       [ 0.04271357],\n",
       "       [ 0.04773869],\n",
       "       [ 0.05276382],\n",
       "       [ 0.05778894],\n",
       "       [ 0.06281407],\n",
       "       [ 0.0678392 ],\n",
       "       [ 0.07286432],\n",
       "       [ 0.07788945],\n",
       "       [ 0.08291457],\n",
       "       [ 0.0879397 ],\n",
       "       [ 0.09296482],\n",
       "       [ 0.09798995],\n",
       "       [ 0.10301508],\n",
       "       [ 0.1080402 ],\n",
       "       [ 0.11306533],\n",
       "       [ 0.11809045],\n",
       "       [ 0.12311558],\n",
       "       [ 0.1281407 ],\n",
       "       [ 0.13316583],\n",
       "       [ 0.13819095],\n",
       "       [ 0.14321608],\n",
       "       [ 0.14824121],\n",
       "       [ 0.15326633],\n",
       "       [ 0.15829146],\n",
       "       [ 0.16331658],\n",
       "       [ 0.16834171],\n",
       "       [ 0.17336683],\n",
       "       [ 0.17839196],\n",
       "       [ 0.18341709],\n",
       "       [ 0.18844221],\n",
       "       [ 0.19346734],\n",
       "       [ 0.19849246],\n",
       "       [ 0.20351759],\n",
       "       [ 0.20854271],\n",
       "       [ 0.21356784],\n",
       "       [ 0.21859296],\n",
       "       [ 0.22361809],\n",
       "       [ 0.22864322],\n",
       "       [ 0.23366834],\n",
       "       [ 0.23869347],\n",
       "       [ 0.24371859],\n",
       "       [ 0.24874372],\n",
       "       [ 0.25376884],\n",
       "       [ 0.25879397],\n",
       "       [ 0.2638191 ],\n",
       "       [ 0.26884422],\n",
       "       [ 0.27386935],\n",
       "       [ 0.27889447],\n",
       "       [ 0.2839196 ],\n",
       "       [ 0.28894472],\n",
       "       [ 0.29396985],\n",
       "       [ 0.29899497],\n",
       "       [ 0.3040201 ],\n",
       "       [ 0.30904523],\n",
       "       [ 0.31407035],\n",
       "       [ 0.31909548],\n",
       "       [ 0.3241206 ],\n",
       "       [ 0.32914573],\n",
       "       [ 0.33417085],\n",
       "       [ 0.33919598],\n",
       "       [ 0.34422111],\n",
       "       [ 0.34924623],\n",
       "       [ 0.35427136],\n",
       "       [ 0.35929648],\n",
       "       [ 0.36432161],\n",
       "       [ 0.36934673],\n",
       "       [ 0.37437186],\n",
       "       [ 0.37939698],\n",
       "       [ 0.38442211],\n",
       "       [ 0.38944724],\n",
       "       [ 0.39447236],\n",
       "       [ 0.39949749],\n",
       "       [ 0.40452261],\n",
       "       [ 0.40954774],\n",
       "       [ 0.41457286],\n",
       "       [ 0.41959799],\n",
       "       [ 0.42462312],\n",
       "       [ 0.42964824],\n",
       "       [ 0.43467337],\n",
       "       [ 0.43969849],\n",
       "       [ 0.44472362],\n",
       "       [ 0.44974874],\n",
       "       [ 0.45477387],\n",
       "       [ 0.45979899],\n",
       "       [ 0.46482412],\n",
       "       [ 0.46984925],\n",
       "       [ 0.47487437],\n",
       "       [ 0.4798995 ],\n",
       "       [ 0.48492462],\n",
       "       [ 0.48994975],\n",
       "       [ 0.49497487],\n",
       "       [ 0.5       ]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3, 2)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "arr = np.array([[1, 2], [3, 4], [5, 6]])\n",
    "arr.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df = pd.DataFrame({\n",
    "    'key':['b','b','a','c','a','a','b'],\n",
    "    'value':range(7)\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 2.63658299e-01],\n",
       "       [ 2.59051969e-01],\n",
       "       [ 2.26473832e-01],\n",
       "       [ 2.39291823e-01],\n",
       "       [ 2.36259244e-01],\n",
       "       [ 2.40786115e-01],\n",
       "       [ 2.90810567e-01],\n",
       "       [ 2.31331217e-01],\n",
       "       [ 2.30470305e-01],\n",
       "       [ 2.52647552e-01],\n",
       "       [ 1.88042745e-01],\n",
       "       [ 1.84543530e-01],\n",
       "       [ 2.58141867e-01],\n",
       "       [ 1.59120469e-01],\n",
       "       [ 2.08258128e-01],\n",
       "       [ 2.02389309e-01],\n",
       "       [ 1.79232555e-01],\n",
       "       [ 1.77286897e-01],\n",
       "       [ 1.72262131e-01],\n",
       "       [ 1.78275268e-01],\n",
       "       [ 1.51989795e-01],\n",
       "       [ 1.78793546e-01],\n",
       "       [ 1.80179621e-01],\n",
       "       [ 1.33003303e-01],\n",
       "       [ 1.26976558e-01],\n",
       "       [ 1.35573288e-01],\n",
       "       [ 1.39738925e-01],\n",
       "       [ 1.63081122e-01],\n",
       "       [ 9.40489297e-02],\n",
       "       [ 1.17231317e-01],\n",
       "       [ 1.59900127e-01],\n",
       "       [ 6.98574651e-02],\n",
       "       [ 1.25136518e-01],\n",
       "       [ 9.90338066e-02],\n",
       "       [ 1.15952499e-01],\n",
       "       [ 1.18101085e-01],\n",
       "       [ 8.66691788e-02],\n",
       "       [ 7.19477031e-02],\n",
       "       [ 1.04668506e-01],\n",
       "       [ 9.27533190e-02],\n",
       "       [ 9.46466150e-02],\n",
       "       [ 9.70104577e-02],\n",
       "       [ 7.90809721e-02],\n",
       "       [ 5.87235367e-02],\n",
       "       [ 8.69718333e-02],\n",
       "       [ 3.80121088e-02],\n",
       "       [ 4.96831087e-02],\n",
       "       [ 6.21221847e-02],\n",
       "       [ 7.02802932e-02],\n",
       "       [ 3.36159797e-02],\n",
       "       [ 5.29938534e-02],\n",
       "       [ 5.96755717e-02],\n",
       "       [ 1.09129189e-01],\n",
       "       [ 4.61423340e-02],\n",
       "       [ 2.74475208e-02],\n",
       "       [ 6.19653264e-02],\n",
       "       [ 4.14399949e-02],\n",
       "       [ 4.54895448e-02],\n",
       "       [ 1.76216265e-02],\n",
       "       [ 3.30707052e-02],\n",
       "       [ 7.13955010e-02],\n",
       "       [ 1.07968064e-02],\n",
       "       [ 3.01599193e-03],\n",
       "       [ 2.31171661e-02],\n",
       "       [ 3.02386495e-02],\n",
       "       [ 5.67754461e-02],\n",
       "       [-2.63873993e-02],\n",
       "       [ 2.97277846e-02],\n",
       "       [ 7.73100589e-03],\n",
       "       [ 2.96028883e-02],\n",
       "       [ 1.92055363e-02],\n",
       "       [ 2.18692346e-02],\n",
       "       [ 2.44276275e-02],\n",
       "       [-9.92995884e-03],\n",
       "       [-2.25769211e-02],\n",
       "       [ 3.56480331e-02],\n",
       "       [-1.60590728e-02],\n",
       "       [ 5.20992389e-03],\n",
       "       [ 4.33945370e-03],\n",
       "       [ 3.26825447e-02],\n",
       "       [-1.44147766e-02],\n",
       "       [-2.03619181e-02],\n",
       "       [ 2.46420943e-02],\n",
       "       [ 3.35005700e-02],\n",
       "       [ 5.88956705e-03],\n",
       "       [ 2.52020167e-04],\n",
       "       [ 1.29250916e-02],\n",
       "       [ 5.15324299e-03],\n",
       "       [-2.49202716e-02],\n",
       "       [-2.44018428e-02],\n",
       "       [ 3.76587372e-02],\n",
       "       [-1.00473782e-03],\n",
       "       [ 1.58064387e-02],\n",
       "       [-7.30198326e-04],\n",
       "       [-1.03895892e-02],\n",
       "       [ 8.80086973e-03],\n",
       "       [ 9.82481908e-03],\n",
       "       [-1.40644652e-02],\n",
       "       [ 4.31625560e-03],\n",
       "       [ 1.75221469e-02],\n",
       "       [ 2.53296408e-04],\n",
       "       [-2.17822098e-02],\n",
       "       [-3.62438040e-02],\n",
       "       [-2.92962273e-02],\n",
       "       [-3.19649630e-02],\n",
       "       [-2.13228230e-02],\n",
       "       [-1.54757900e-02],\n",
       "       [-5.55075647e-03],\n",
       "       [ 6.28296277e-03],\n",
       "       [-4.58864708e-04],\n",
       "       [ 1.56394774e-02],\n",
       "       [ 1.01008711e-02],\n",
       "       [-3.43582817e-03],\n",
       "       [ 5.22454898e-03],\n",
       "       [-2.82394767e-03],\n",
       "       [-3.55638093e-02],\n",
       "       [ 1.25099377e-02],\n",
       "       [-3.35716831e-03],\n",
       "       [ 8.08206723e-03],\n",
       "       [-1.30313260e-02],\n",
       "       [ 4.57545657e-02],\n",
       "       [-1.01653761e-02],\n",
       "       [ 1.56401642e-02],\n",
       "       [-6.23106557e-04],\n",
       "       [ 4.29074546e-02],\n",
       "       [ 7.54027272e-03],\n",
       "       [-1.10973451e-02],\n",
       "       [ 3.03265062e-02],\n",
       "       [ 1.05910641e-02],\n",
       "       [-9.22616647e-03],\n",
       "       [ 7.50932836e-03],\n",
       "       [ 8.06694859e-02],\n",
       "       [-1.68241649e-02],\n",
       "       [ 1.89279109e-02],\n",
       "       [ 3.43388719e-02],\n",
       "       [ 4.45899378e-02],\n",
       "       [ 5.31172553e-02],\n",
       "       [ 2.35932724e-02],\n",
       "       [ 5.90792137e-02],\n",
       "       [ 2.22818900e-02],\n",
       "       [ 6.26073592e-02],\n",
       "       [ 6.44136581e-03],\n",
       "       [ 3.52297021e-02],\n",
       "       [ 7.05552533e-02],\n",
       "       [ 6.13691582e-02],\n",
       "       [ 6.91556289e-02],\n",
       "       [ 4.45529233e-02],\n",
       "       [ 5.64636570e-02],\n",
       "       [ 7.29721549e-02],\n",
       "       [ 3.10381183e-02],\n",
       "       [ 2.73173720e-02],\n",
       "       [ 5.76655115e-02],\n",
       "       [ 8.92705694e-02],\n",
       "       [ 4.98165951e-02],\n",
       "       [ 7.34838719e-02],\n",
       "       [ 4.64671187e-02],\n",
       "       [ 1.30970257e-01],\n",
       "       [ 9.95965472e-02],\n",
       "       [ 7.90332218e-02],\n",
       "       [ 1.45921534e-01],\n",
       "       [ 5.43401961e-02],\n",
       "       [ 9.58401306e-02],\n",
       "       [ 1.05619935e-01],\n",
       "       [ 4.29286306e-02],\n",
       "       [ 7.42109015e-02],\n",
       "       [ 1.12923428e-01],\n",
       "       [ 1.38915451e-01],\n",
       "       [ 1.08571694e-01],\n",
       "       [ 1.09605336e-01],\n",
       "       [ 1.21959683e-01],\n",
       "       [ 1.57730105e-01],\n",
       "       [ 1.34780679e-01],\n",
       "       [ 1.12927235e-01],\n",
       "       [ 1.46889352e-01],\n",
       "       [ 1.71139764e-01],\n",
       "       [ 1.44167048e-01],\n",
       "       [ 1.32281985e-01],\n",
       "       [ 1.45494680e-01],\n",
       "       [ 1.51293922e-01],\n",
       "       [ 1.47340131e-01],\n",
       "       [ 1.78119603e-01],\n",
       "       [ 1.65647334e-01],\n",
       "       [ 2.13224133e-01],\n",
       "       [ 1.93198828e-01],\n",
       "       [ 1.58982145e-01],\n",
       "       [ 1.84430255e-01],\n",
       "       [ 2.13806413e-01],\n",
       "       [ 1.67566111e-01],\n",
       "       [ 1.81740924e-01],\n",
       "       [ 1.90582536e-01],\n",
       "       [ 2.15749380e-01],\n",
       "       [ 2.37308448e-01],\n",
       "       [ 2.33797566e-01],\n",
       "       [ 2.68707977e-01],\n",
       "       [ 2.40391504e-01],\n",
       "       [ 2.17821786e-01],\n",
       "       [ 2.21316766e-01],\n",
       "       [ 2.58428122e-01],\n",
       "       [ 2.29602185e-01],\n",
       "       [ 2.37703900e-01]])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns\n",
    "df.dtypes\n",
    "y_data"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py3",
   "language": "python",
   "name": "py3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
